跳到主要内容

NC45 实现二叉树先序,中序和后序遍历

https://www.nowcoder.com/practice/a9fec6c46a684ad5a3abd4e365a9d362

这题可以使用非递归的形式,但是为了快速解题这里就用传统的方式了

/*
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/

func preorderTraversal(root *TreeNode, result *[]int) {
if root == nil {
return
}
*result = append(*result, root.Val)
preorderTraversal(root.Left, result)
preorderTraversal(root.Right, result)
}

func inorderTraversal(root *TreeNode, result *[]int) {
if root == nil {
return
}
inorderTraversal(root.Left, result)
*result = append(*result, root.Val)
inorderTraversal(root.Right, result)
}

func postorderTraversal(root *TreeNode, result *[]int) {
if root == nil {
return
}
postorderTraversal(root.Left, result)
postorderTraversal(root.Right, result)
*result = append(*result, root.Val)
}

/**
*
* @param root TreeNode类 the root of binary tree
* @return int整型二维数组
*/
func threeOrders( root *TreeNode ) [][]int {
var parr, inarr, poarr = make([]int, 0), make([]int, 0), make([]int, 0)
preorderTraversal(root, &parr)
inorderTraversal(root, &inarr)
postorderTraversal(root, &poarr)
return [][]int {parr, inarr, poarr}
}